package A.Datos;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import DAO.AlumnoDAO;


public class BDGrupos {

    /**
     * seleccion de alumnos de un grupo
     * @param idGrupo
     * @param idModulo
     * @return array de alumnoDAO
     */
    public static ArrayList<AlumnoDAO> alumnosGrupo(int idGrupo, int idModulo) throws Exception {
        String sql = "SELECT a.* FROM GRUPO_MODULO_ALUMNO g, ALUMNO a  WHERE g.ID_GRUPO = ? AND  g.ID_ALUMNO = a.ID_ALUMNO ORDER BY a.NOM_ALUMNO;";
        Connection conn = null;
        PreparedStatement sentencia = null;
        ResultSet rs = null;
        ArrayList<AlumnoDAO> alumnos = null;
        try {
            conn = ConexionBasedeDatos.abreConnexio();
            sentencia = conn.prepareStatement(sql);
            sentencia.setInt(1, idGrupo);
            sentencia.setInt(2, idModulo);
            rs = sentencia.executeQuery();
            recogeAlumnosGrupo(alumnos, rs);
        } catch (SQLException ex) {
            throw new Exception("No se ha podido recoger los alumnos del grupo "+ idGrupo + ", del modulo: " + idModulo +  "\n"
                    + ex.getMessage() + "(" + ex.getErrorCode() + ")");
        } finally {
            ConexionBasedeDatos.cierraRecursos(conn, rs);
        }
        return alumnos;
    }
    /**
     * Recoge los datos que provienen de la BD y se rellenan los DAO
     * @param listadoAlumnos
     * @param rs
     * @throws SQLException
     */
    private static void recogeAlumnosGrupo(ArrayList<AlumnoDAO> listadoAlumnos, ResultSet rs) throws SQLException {
        while (rs.next()) {
            AlumnoDAO alumnoDAO = new AlumnoDAO();
            alumnoDAO.setIdAlumno(rs.getInt("id_alumno"));
            alumnoDAO.setNombre(rs.getString("nom_alumno"));
            alumnoDAO.setApellido1(rs.getString("ape1_alumno"));
            alumnoDAO.setApellido2(rs.getString("ape2_alumno"));
            alumnoDAO.setNif(rs.getString("nif_alumno"));
            listadoAlumnos.add(alumnoDAO);
        }
    }

 }//class
